#ifndef __ULCORE_ALGORITHM_H__
#define __ULCORE_ALGORITHM_H__

#include "ULCore_Statistic.h"
#include "ULCore_Prediction.h"
#include <cmath>

#define DT_DATA_MAX_SIZE	15

using namespace std;

class ULC_ACData{
private:
	int redBalls[UL_RED_BALLS_COUNT];
public:
	int ac;		//Final ac
	int dtDiff;	//How many different dt
	int dtDataFinal[DT_DATA_MAX_SIZE]; //Deltas (no dumplicated data)
	int dtDataOut[DT_DATA_MAX_SIZE]; //Deltas (may contain dumplicated data)
private:
	void Init();
public:
	ULC_ACData();
	ULC_ACData(ULC_Balls *balls);
	int Caculate(ULC_Balls *balls);
	friend ostream& operator<<(ostream &os, const ULC_ACData &acData);
};

class ULC_StandardDeviation{
public:
	double stdDeviation;
	double average;
private:
	void Init();
public:
	ULC_StandardDeviation();
	ULC_StandardDeviation(int *statData, int size);
	int Caculate(int *statData, int size);
	friend ostream& operator<<(ostream &os, const ULC_StandardDeviation &stdDev);
};

#endif /*__ULCORE_ALGORITHM_H__*/
